/**权限校验文件
 * 在用户进入页面前，判断他有没有权限
 */

import router from '@/router'
import { useLoginUserStore } from '@/stores/useLoginUserStore.ts'
import { message } from 'ant-design-vue'

// 单页面，，，===》 路由到别的页面不会刷新
// 是否是首次获取登录用户
let firstFetchLogin = true

/**
 * 全局权限校验，每次切换都会执行
 */
router.beforeEach(async (to,from,next)=>{
  const loginUserStore = useLoginUserStore()
  let loginUser = loginUserStore.loginUser


  if (firstFetchLogin){
    // 确保页面刷新时，，首次加载时，能等待后端返回用户信息后，，再校验
    await loginUserStore.fetchLoginUser()
    loginUser = loginUserStore.loginUser
    firstFetchLogin = false
  }

  const toUrl = to.fullPath
  // 自己定义权限规则
  if (toUrl.startsWith("/admin")){
    if (!loginUser || loginUser.userRole !== "admin"){
      // 不是管理员
      message.error("没有权限")
      next(`/user/login?redirect=${to.fullPath}`)
      return
    }
  }

  next()

})
